#include <semaphore.h>

//POSIX 信号量

namespace SemModule
{
    int initvalue = 1;
    class Sem
    {
        
    public:
        Sem(int vaule = initvalue)
        {
            sem_init(&sem,0,vaule);
        }

        void P()
        {
            //等待信号，会将信号量 -1
            sem_wait(&sem);
        }
        
        void V()
        {
            //发布资源，表示信号量用完毕，归还资源，信号量 +1
            sem_post(&sem);
        }

        ~Sem()
        {
            sem_destroy(&sem);
        }
    private:
        sem_t sem;
    };
}
